ORA 您所在的位置:网站首页 oracle的group by语句是不是有毛病 ORA

ORA

2024-07-18 02:07| 来源: 网络整理| 查看: 265

问题

对于常见在select中出现的列没有全部出现在group by的后面这种原因就不再进行细说了,现说下我碰到的比较特殊的情况。在Oracle的11.2.0.1.0版本上执行下面语句报ORA-00979不是GROUP BY表达式错误

select substr(a.empno,1,4) as year,count(1) from (select * from scott.emp) a group by substr(a.empno,1,4) order by substr(a.empno,1,4) desc;

但是换成下面两种方式就没用问题:

方式1 不使用子查询 select substr(a.empno,1,4) as year,count(1) from scott.emp a group by substr(a.empno,1,4) order by substr(a.empno,1,4) desc; 方式2 order by 中使用别名 select substr(a.empno,1,4) as year,count(1) from (select * from scott.emp) a group by substr(a.empno,1,4) order by year desc; 总结

个人分析,是因为Oracle的11.2.0.1.0版本不支持:在使用子查询且有group by 的情况下,对order by里的字段不使用别名。所以以后在写sql的时候尽量规范化,即order by 后面尽量使用别名。注:本人使用11.2.0.4.0版本时,并未碰到上面的问题,故推测是11.2.0.1.0版本问题,可通过升级oracle版本进行测试。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有